<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>数组扁平化</title>
</head>
<body>
  <script>
    let arr = [1, [2, [3, 4, 5]]]
    // let arr = [
    //   {id: 1,
    //     children: [{id: 11,children: [{id: 111,}]},
    //     {id: 12,}]
    //   },
    //   {id: 2,
    //     children: [{id: 21,children: []}]
    //   }
    // ]
    const res = []
    function fn(arr) {
      // forEach() 数组每个元素都执行一次回调函数
      arr.forEach(item => {
        // console.log(item)
        // Array.isArray() 用于确定传递的值是否是一个数组，是返回truc，不是返回falsc。
        // 判断item是否是一个数组，是则重新调用自己，不是则添加到res中
        if (Array.isArray(item)) {
          fn(item)
        } else {
          res.push(item)
        }
      })
    }
    fn(arr)
    console.log(res) // [ 1, 2, 3, 4, 5 ]
  </script>
</body>
</html>